package cn.doitedu.day06
import scala.collection.immutable
import scala.runtime.RichInt

/**
 *  隐式转换，非常典型的例子
 */
object ToDemo {

  def main(args: Array[String]): Unit = {

    //to方法，是定义在Int类上的吗？
    val rg: Range.Inclusive = 1 to 10 // 1.to(10)
    //但是实际上，Int类上根本没有to方法，Int的父类也没有to方法
    //为什么，直接使用 1 to 10 ,而不是先包装后再调用（背后有一股神奇的力量，就是隐式转换）
    //找到了对应的隐式转换方法或函数，将Int转成RichInt后再调用to方法。



    //如果没有隐式转换，需要如下方式调用to方法
    //需要认为的包装一些，然后调用装饰类中扩展的方法
    //前提是，必须有一个隐式方法或函数，将Int转成RichInt类型
    val richInt = new RichInt(1)
    val rg2: Range.Inclusive = richInt.to(10)

  }

}
